---
layout: "default"
title: "Protocols"
description: "Documentation for all protocols in the Swift language."
root: "/v4.2"
---

<div class="row">
<div class="col-sm-6">
<ul class="main-list">
<li><a href="/v4.2/protocol/BidirectionalCollection/">BidirectionalCollection</a></li>
<li><a href="/v4.2/protocol/BinaryFloatingPoint/">BinaryFloatingPoint</a></li>
<li><a href="/v4.2/protocol/BinaryInteger/">BinaryInteger</a></li>
<li><a href="/v4.2/protocol/CVarArg/">CVarArg</a></li>
<li><a href="/v4.2/protocol/CaseIterable/">CaseIterable</a></li>
<li><a href="/v4.2/protocol/CodingKey/">CodingKey</a></li>
<li><a href="/v4.2/protocol/Collection/">Collection</a></li>
<li><a href="/v4.2/protocol/Comparable/">Comparable</a></li>
<li><a href="/v4.2/protocol/CustomDebugStringConvertible/">CustomDebugStringConvertible</a></li>
<li><a href="/v4.2/protocol/CustomLeafReflectable/">CustomLeafReflectable</a></li>
<li><a href="/v4.2/protocol/CustomPlaygroundDisplayConvertible/">CustomPlaygroundDisplayConvertible</a></li>
<li><a href="/v4.2/protocol/CustomPlaygroundQuickLookable/">CustomPlaygroundQuickLookable</a></li>
<li><a href="/v4.2/protocol/CustomReflectable/">CustomReflectable</a></li>
<li><a href="/v4.2/protocol/CustomStringConvertible/">CustomStringConvertible</a></li>
<li><a href="/v4.2/protocol/Decodable/">Decodable</a></li>
<li><a href="/v4.2/protocol/Decoder/">Decoder</a></li>
<li><a href="/v4.2/protocol/Encodable/">Encodable</a></li>
<li><a href="/v4.2/protocol/Encoder/">Encoder</a></li>
<li><a href="/v4.2/protocol/Equatable/">Equatable</a></li>
<li><a href="/v4.2/protocol/Error/">Error</a></li>
<li><a href="/v4.2/protocol/ExpressibleByArrayLiteral/">ExpressibleByArrayLiteral</a></li>
<li><a href="/v4.2/protocol/ExpressibleByBooleanLiteral/">ExpressibleByBooleanLiteral</a></li>
<li><a href="/v4.2/protocol/ExpressibleByDictionaryLiteral/">ExpressibleByDictionaryLiteral</a></li>
<li><a href="/v4.2/protocol/ExpressibleByExtendedGraphemeClusterLiteral/">ExpressibleByExtendedGraphemeClusterLiteral</a></li>
<li><a href="/v4.2/protocol/ExpressibleByFloatLiteral/">ExpressibleByFloatLiteral</a></li>
<li><a href="/v4.2/protocol/ExpressibleByIntegerLiteral/">ExpressibleByIntegerLiteral</a></li>
<li><a href="/v4.2/protocol/ExpressibleByNilLiteral/">ExpressibleByNilLiteral</a></li>
<li><a href="/v4.2/protocol/ExpressibleByStringLiteral/">ExpressibleByStringLiteral</a></li>
<li><a href="/v4.2/protocol/ExpressibleByUnicodeScalarLiteral/">ExpressibleByUnicodeScalarLiteral</a></li>
<li><a href="/v4.2/protocol/FixedWidthInteger/">FixedWidthInteger</a></li>
<li><a href="/v4.2/protocol/FloatingPoint/">FloatingPoint</a></li>
<li><a href="/v4.2/protocol/Hashable/">Hashable</a></li>
</ul>
</div>
<div class="col-sm-6">
<ul class="main-list">
<li><a href="/v4.2/protocol/IteratorProtocol/">IteratorProtocol</a></li>
<li><a href="/v4.2/protocol/KeyedDecodingContainerProtocol/">KeyedDecodingContainerProtocol</a></li>
<li><a href="/v4.2/protocol/KeyedEncodingContainerProtocol/">KeyedEncodingContainerProtocol</a></li>
<li><a href="/v4.2/protocol/LazyCollectionProtocol/">LazyCollectionProtocol</a></li>
<li><a href="/v4.2/protocol/LazySequenceProtocol/">LazySequenceProtocol</a></li>
<li><a href="/v4.2/protocol/LosslessStringConvertible/">LosslessStringConvertible</a></li>
<li><a href="/v4.2/protocol/MirrorPath/">MirrorPath</a></li>
<li><a href="/v4.2/protocol/MutableCollection/">MutableCollection</a></li>
<li><a href="/v4.2/protocol/Numeric/">Numeric</a></li>
<li><a href="/v4.2/protocol/OptionSet/">OptionSet</a></li>
<li><a href="/v4.2/protocol/RandomAccessCollection/">RandomAccessCollection</a></li>
<li><a href="/v4.2/protocol/RandomNumberGenerator/">RandomNumberGenerator</a></li>
<li><a href="/v4.2/protocol/RangeExpression/">RangeExpression</a></li>
<li><a href="/v4.2/protocol/RangeReplaceableCollection/">RangeReplaceableCollection</a></li>
<li><a href="/v4.2/protocol/RawRepresentable/">RawRepresentable</a></li>
<li><a href="/v4.2/protocol/Sequence/">Sequence</a></li>
<li><a href="/v4.2/protocol/SetAlgebra/">SetAlgebra</a></li>
<li><a href="/v4.2/protocol/SignedInteger/">SignedInteger</a></li>
<li><a href="/v4.2/protocol/SignedNumeric/">SignedNumeric</a></li>
<li><a href="/v4.2/protocol/SingleValueDecodingContainer/">SingleValueDecodingContainer</a></li>
<li><a href="/v4.2/protocol/SingleValueEncodingContainer/">SingleValueEncodingContainer</a></li>
<li><a href="/v4.2/protocol/Strideable/">Strideable</a></li>
<li><a href="/v4.2/protocol/StringProtocol/">StringProtocol</a></li>
<li><a href="/v4.2/protocol/TextOutputStream/">TextOutputStream</a></li>
<li><a href="/v4.2/protocol/TextOutputStreamable/">TextOutputStreamable</a></li>
<li><a href="/v4.2/protocol/UnicodeCodec/">UnicodeCodec</a></li>
<li><a href="/v4.2/protocol/UnkeyedDecodingContainer/">UnkeyedDecodingContainer</a></li>
<li><a href="/v4.2/protocol/UnkeyedEncodingContainer/">UnkeyedEncodingContainer</a></li>
<li><a href="/v4.2/protocol/UnsignedInteger/">UnsignedInteger</a></li>
<li><a href="/v4.2/protocol/_AppendKeyPath/">_AppendKeyPath</a></li>
<li><a href="/v4.2/protocol/_SequenceWrapper/">_SequenceWrapper</a></li>
</ul>
</div>
</div>
